Афінні шифри. Лінійний шифр 2-го порядку

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2010
Тип роботи:
Лабораторна робота
Предмет:
Методи та засоби криптологічних перетворень
Група:
ІБ – 44

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра ЗІ  Лабороторна робота №2 з курсу «Методи і засоби криптологічних перетворень» на тему: «Афінні шифри. Лінійний шифр 2-го порядку» Мета роботи: ознайомитися з афінними шифрами (шифр зсуву, лінійний шифр, афінний шифр 1-го і вищих порядків). Завдання: Написати програму шифрування та розшифрування на мові програмування С/С++ для реалізації лінійного шифру 2-го порядку. Короткі теоретичні відомості Позначимо через Mk(Zn) множину матриць розміру k×k з коефіцієнтом з кільця Zn. Через Gl(Zn) позначимо підмножину оборотніх матриць. Для деякої матриці А  Gl(Zn) обернену до неї матрицю позначимо . Добутком А*Х матриці А={}, А  Mk(Zn), на вектор-стовпчик Х   є вектор-стовпчик  * =  Ключ: А  Glk(Zn), НСД (w, n)=1, де w – визначник матриці. Зашифрування: відкритий текст розбивається на k-грами, кожна k-грама Х зашифровується k-грамою У, при чому У=(А*Х)mod n. Розшифрування: У→Х, Х=А’*У, А’=  - ключ розшифрування. Розглянемо це детальніше на прикладі: k=2, тобто біграмний лінійний шифр. Нехай необхідно зашифрувати біг раму кл з ключем А=. Біграмі кл в українській мові відповідають числа 14 15. Отже за шифрування здійснюється так: * =  = . В результаті за шифрування ми отримали біг раму іг. Матриця А – оборотна, тому що НСД (w, n)=(31,33)=1. Процес розшифрування здійснюється наступним чином. Потрібно знайти ключ дешифрування =, де  – обернений елемент, який знайдемо за алгоритмом Евкліда: 33=1*31+2 31=15*2+1 2=2*1+0 1=1*31+(-15)*2=1*31+(-15)*(33-1*31)=-15*33++16*31 16*31≡1(mod 33) =16 – обернений елемент Отже,  =  =  *= =  В результаті розшифрування біграми іг ми отримали початкову біграму кл. Текст програми шифрування #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <math.h> void main() { clrscr(); char alfavit[]="abcdefghijklmnopqrstuvwxyz"; char opentext[2][15]={"sgdiakaovttoc", "oonysrvsiysne" }; char shyfr[2][15]; char a1,a2,a3,a4,b1,b2; int a11,a22,a33,a44,x1,x2,m,z1,z2,k,j,i; a1='b';a2='d';a3='d';a4='e';m=26; for(i=0;i<=25;i++) {if (a1==alfavit[i]) a11=i;} for(i=0;i<=25;i++) {if (a2==alfavit[i]) a22=i;} for(i=0;i<=25;i++) {if (a3==alfavit[i]) a33=i;} for(i=0;i<=25;i++) {if (a4==alfavit[i]) a44=i;} for(j=0;opentext[0][j]>0;j++) { k=j;} k=k+1; for(j=0;j<k;j++) {b1=opentext[0][j]; b2=opentext[1][j]; for(i=0;i<=25;i++) {if (b1==alfavit[i]) b1=i;} for(i=0;i<=25;i++) {if (b2==alfavit[i]) b2=i;} x1=0;x2=0;z1=0;z2=0; x1=a11*b1+a22*b2; x2=a33*b1+a44*b2; z1=x1%m; shyfr[0][j]=z1; z2=x2%m; shyfr[1][j]=z2; } for(j=0;j<k;j++) { for(i=0;i<=25;i++) {if (shyfr[0][j]==i) shyfr[0][j]=alfavit[i];} printf(«%c»,shyfr[0][j]); for(i=0;i<=25;i++) {if (shyfr[1][j]==i) shyfr[1][j]=alfavit[i];} printf(«%c»,shyfr[1][j]);} getch(); } Результат виконання програми Блок-схема алгоритму програми шифрування - + - + - + - + - + - + - + Текст програми розшифрування #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <math.h> void main() { clrscr(); char alfavit[]="abcdefghijklmnopqrstuvwxyz"; char shyfr[2][15]={"iwqccjlqtnvbo", "gwjquugkrxzqw" }; char rozshyfr[2][15]; char a1,a2,a3,a4; int k1,a11,a22,a33,a44,b1,b2,x1,x2,m,z1,z2,w,i,k,j; a1='b';a2='d';a3='d';a4='e';m=26; k=0;a11=0;a22=0;a33=0;a44=0; z1=0;z2=0; for(i=0;i<=25;i++) {if (a1==alfavit[i]) a1=i;} for(i=0;i<=25;i++) {if (a2==alfavit[i]) a2=i;} for(i=0;i<=25;i++) {if (a3==alfavit[i]) a3=i;} for(i=0;i<=25;i++) {if (a4==alfavit[i]) a4=i;} for(j=0;shyfr[0][j]>0;j++) { k1=j;} k1...
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини